perm filename PUPFTP.TVR[UP,DOC]3 blob sn#700578 filedate 1983-02-18 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00021 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	                             PUPFTP - Ethernet FTP
C00004 00003	INTRODUCTION
C00006 00004	NOTATION
C00008 00005	COMMAND FORMAT
C00011 00006	SWITCHES
C00013 00007	OPENING A CONNECTION
C00017 00008	CONFIRMATION
C00019 00009	USER NAMES
C00020 00010	MULTIPLE TRANSFERS
C00024 00011	RETR local-file←remote-file                                         Synonym: GET
C00028 00012	STORE local-file→remote-file                                 Synonyms: PUT, SEND
C00033 00013	DELETE file
C00036 00014	LIST file                                                          Synonym: STAT
C00038 00015	TYPE TEXT                                                  Synonyms: ASCII, TEXT
C00043 00016	USER name                                                         Synonym: LOGIN
C00046 00017	ACCOUNT name                                                       Synonym: ACCT
C00047 00018	ALIAS name                                                   Synonyms: CWD, XCWD
C00048 00019	QUIT                                                         Synonyms: BYE, EXIT
C00049 00020	HELP topic
C00051 00021	Unimplemented commands
C00053 ENDMK
C⊗;
                             PUPFTP - Ethernet FTP



               Note:  This copy is intended for online use only.

                            PLEASE DO NOT PRINT IT.

               A version suitable for printing will be made soon.
INTRODUCTION

PUPFTP is a program to transfer files over an Ethernet connection.  It  can both
store and retrieve  files from a  remote file system, as  well as do  other file
management   operations,  such   as  deletion,   renaming  files,   and  listing
directories.  It is capable of  transferring multiple files on a  single command
when given 'wild card' file names.

PUPFTP is different from FTP for the ARPANET.  The ARPANET protocol  uses TELNET
based commands and  communicates data on a  separate link.  PUPFTP  uses special
marks to separate commands and data, and has property list based commands.  Like
the ARPANET version, the default mode for data transfer is text.  However binary
data is  transmitted on  a word  basis rather  than in  stream (or  image) mode.
PUPFTP in text mode also defaults to a different end of line convention  than is
used on WAITS, and this must  be avoided if sending files formatted for  the LPT
or XGP.
NOTATION

In the following documentation, the term 'local' refers to the site on which you
are running  PUPFTP and  the term 'remote'  (or 'foreign')  refers to  the other
computer system that to which PUPFTP is connected.  Keep this especially in mind
when you  are using CHAT  to communicate  with a system  and then  that system's
PUPFTP to connect to the system on which you are running CHAT!

The manual is organized first by topic and then by command.  The first line of a
command description look like this:

ACCOUNT name                                                       Synonym: ACCT

Words entirely in upper case stand for themselves and are usually command names.
Words entirely in lower case  stand for what they describe; for  example, 'name'
stands for the  account name that  you would like  to use.  'Synonym'  refers to
alternate  names  for the  command  which are  included  for people  who  may be
accustomed to an FTP program on a different system.
COMMAND FORMAT

A  command consists  of  a command  name,  optionally followed  by  switches and
arguments, if any.  The command name may be abbreviated to as few  characters as
are needed  to uniquely  specify the  command.  However,  new commands  might be
added in the future.  Therefore, it is recommended that in command files that at
least four letters be used, as  the first four letters will be guaranteed  to be
unambiguous.   Switches  immediately   follow  the  command  name   without  any
intervening spaces.

For most commands,  the remainder of  the command line  is passed to  the remote
system with little  or no interpretation.  A  few commands may also  reference a
local file, which is separated from the rest of the command by an arrow  ('←' or
'→') or  an equal  sign ('=').   Local files  must precede  remote files  in the
command line since PUPFTP makes no assumptions about the format that  the remote
system uses for file names.  Local files are referred to as follows:

      device:filename.extension[project,programmer]

Where most of these fields may be omitted.  There must be either a 'filename' or
a 'device' field and some  devices, notatably DSK and UDPs, require  a filename.
Note that 'device'  and 'filename' are limited  to six characters and  the other
fields to three characters, and  in general, these characters should  be letters
or digits.  If  'project' and 'programmer' are  omitted, then the  default (that
is, your current ALIAS) directory is used.

Command  names and  local file  names may  be in  upper, lower,  or  mixed case.
However, some systems,  notably UNIX, may care  about what case is  supplied for
things like remote file names, user names, and passwords.
SWITCHES

*** Switches are not implemented yet. ***

A switch is something that may  optionally be given to change the way  a command
works.  Switches  consist of  a slash  ('/') immediately  followed by  a letter.
Except when specify global switches upon opening a connection, all switches must
immediately  follow  the  name  of  the  command  (not  after  files   or  other
parameters).  A switch may  also have a minus  sign ('-') between the  slash and
the letter which usually inverts the function of the switch.  For example,

        RETRIEVE/O TEST.TXT

permit overwriting of TEST.TXT without asking for confirmation, while

        RETRIEVE/-O TEST.TXT

requires confirmation.
OPENING A CONNECTION

To  connect to  a system  which is  a 'server'  (a VAX,  PDP-10, or  other large
machine), you run PUPFTP and give it a host name.  On a system which is a 'user'
(or personal  machine) like an  ALTO, you may  have to start  up an  FTP program
before attempting  a connection.   You may specify  the host  name on  the WAITS
monitor command line by:

        R PUPFTP;host-name

For example, 'R  PUPFTP;IFS' would connect you  to the host called  IFS (Interim
File Server.)

A 'host-name' is something that refers to a particular system connected  via the
Ethernet.   It must  be spelled  out in  full as  the host  name to  host number
translation  is obtained  from a  host on  the Ethernet  which does  not support
abbreviation.

If for some  reason the host name  doesn't seem to work,  and you know  the host
number, you may give that instead.  The format to specify a numeric host is:

        R PUPFTP;host-number#
                or
        R PUPFTP;network-number#host-number#

These numbers are in octal.   For example, 'R PUPFTP;50#200#' is  an alternative
way to connect to SUNet's IFS.

*** The following is not implemented yet.

When establishing a connection, you  may also specify global switches  which are
in effect  for the duration  of the connection.   They are  included immediately
after the host name in the WAITS monitor command.  For example,

        R PUPFTP;IFS/L

will  save a  typescript of  your interactions  with the  IFS on  a  file called
FTP.LOG on your  default (that is, your  ALIAS) directory.  The  global switches
currently defined are:

/L      Save typescript on FTP.LOG
/A      Append typescript to FTP.LOG instead of replacing it as /L does.
/V      Always ask for confirmations.
/-V     Never ask for confirmations.

The  default is  not to  save a  typescript and  to ask  for  confirmation under
certain circumstances which are documented under the individual commands.
CONFIRMATION

Most  commands  expect  confirmation  before  completing  an  action.   This  is
different  from  FTP for  the  ARPANET  which only  asks  for  confirmation when
overwriting a file.  There are  several reasons for this.  First,  many commands
can  transfer  more  than  one  file  and the  user  may  not  want  all  of the
possibilities.   Second,   most  other   Ethernet  FTP   implementaions  request
confirmations, and so many users will be expecting an opportunity to verify that
they really want to do an operation.

The program expects confirmation when it prints one of the following:

        (Confirm)
        (New file)
        (Old file)

To confirm or reject, type one of the following:

      Accept: <return> or <space>
      Reject: <rubout> (also called <bs> on some terminals)
      Abort:  <altmode>

When you type <altmode>, the entire command is aborted.  If the command involves
a large number  of files, it may  take a while for  PUPFTP to cancel all  of the
pending requests.

When implemented, you  will be able  to use the switches  /-V or /O  to suppress
some or all confirmations.
USER NAMES

Most systems which are 'servers' require a user name and password before you are
permitted to access any files.  This may be supplied in the USER  command, which
will also ask for a password  with echoing turned off (assuming you have  a full
duplex terminal or display).

CAUTION:  At the current time, systems running UNIX are sensitive to  case, that
is, if the user name is lower  case (which is almost always true), then  it must
be supplied to PUPFTP in lower case.
MULTIPLE TRANSFERS

Some commands may operate on more  than one file.  STORE can always  do multiple
files, and  RETRIEVE, LIST and  DELETE may if  the remote system  supports this.
Normally, multiple files are specified by 'wild card' file names.   This permits
one or more  fields (depending on implementation)  to be partially  specified or
unspecified.  '*' means match anything  in a particular field, and  also matches
the period ('.') separating the extension  from the rest of the file  name.  For
example:

        STORE *.FAI[1,BAR]

will store all files having the extension 'FAI' on the directory  '[1,BAR]'.  An
example of a partially specified field is:

        STORE UDP1:PUP*.*

which will  store all  files with  'PUP' as  their first  three letters  and any
extension.  Since '*' can also match a period separating the extension, we could
have also simply said 'STORE UDP1:PUP*'.

CAUTION: The meaning of '*' is different in Ethernet FTP than it is  for ARPANET
FTP.   'FOO*' will match both 'FOOMAC' and 'FOO.MAC', which most WAITS users may
not expect.  Use 'FOO*.' to insure that the extension is null.

Wild cards may also be used for directory names.  For example:

        STORE *.DOC[*,XYZ]
and
        RETRIEVE <*Doc*>*.Press

Note that in both cases, the directory  is only used on the end of  the transfer
where the file(s) are read.   That  is, '[*,XYZ]' only applies on the  local end
of the STORE and '<*Doc*>' only  applies on the remote end of the  RETRIEVE.  On
the other end of each of those transfers, the normal default directory  is used.
That is, on a STORE, PUPFTP parses the full file name, including  directory, and
but only sends the file name and extension of the file being transferred  to the
other end.

PUPFTP does not attempt to parse the file name on a RETRIEVE; instead, it simply
sends it.  The remote system separates the device and directory  information and
returns a file name which may be used as a local file name, subject,  of course,
to the WAITS restriction of six characters for a file name and  three characters
for an extension.
RETR local-file←remote-file                                         Synonym: GET
RETR file

The  RETRIEVE command  (usually abbreviated  as RETR)  transfers files  from the
remote system to the  local system (SAIL).  The  first form is used  to transfer
single files, usually  giving them a different  name on the remote  system.  The
second  form is  used when  the same  file name  is intended  for  both systems.
However, the local system (SAIL) only uses the first six characters for the file
name  and  the  first   three  characters  for  the  extension.    For  example,
ETHERNET.PRESS would be written by WAITS as ETHERN.PRE and would  be overwritten
by ETHERNET.PRESENTATION if both files are retrieved using the second form.

A retrieve  may refer to  multiple files,  by means of  'wild card'  file names.
What  a  wild  card  file  name can  be  depends  upon  what  the  remote system
implements.   Usually,  the  character  '*' is  taken  to  match  any  number of
characters, including the  '.' used to separate  the extension from the  rest of
the file name.  At the present time,  wild cards may only be used in  the second
form or in the remote file part of the first form.

Transfers using 'wild card' file  names will require confirmation for  each file
transferred.  <RETURN> accepts  a file, and  <RUBOUT> (sometimes called  <BS> or
<DEL>) rejects a file.  <ALTMODE> (sometimes called <ESCAPE>) aborts  the entire
command.

The default mode for transfer is  type Text, byte size 8.  See the  TYPE command
for more information on possible types and byte sizes.


The following switches may be given in a future implemention:

/V      Verify.  Always asks for confirmation from the terminal.
/-V     Never asks.
/O      Overwrite OK, don't ask for confirmation
/N      Never overwrite existing files.
/U      Update.  Transfer file if file already exists, but has an older creation
        date than the remote file.
/W(?)   Similar to  /U, except that  it transfers files  which do not  exist, or
        have been written more recently.
STORE local-file→remote-file                                 Synonyms: PUT, SEND
STORE file

The STORE  command transfers files  from the local  system (SAIL) to  the remote
system.  The first form is used  to transfer a single file, usually giving  it a
different name on the remote system.  The second form is used when the same file
name is intended for both systems.  However, the local system truncates the file
name to six characters  and the extension to  three character, and no  more than
these are given to  the remote system as  a file specification.  The  first form
must be used if you want the remote file to have longer file names than are used
locally.  Note that some systems, such as UNIX, expect their file names in lower
case, and the first form must be used for those sites.

The STORE command may also  transfer multiple files via 'wild card'  file names.
A file name may include one or more instances of '*'s.  '*' matches zero or more
instances of any character found in a file name including '.' but excluding '['.
This means that '*MAC' will match FOO.MAC and FOOMAC, and is different  from the
way it  works in the  COPY program.  Use  '*.'  if you  want to match  all files
having no  extension.  '?'  will match  exactly one  instance of  any character,
including '.' but not '['.  For now,  wild cards may only be used in  the second
form of STORE, that is, using the same file for both local and remote systems.

Transfers require confirmation for  each file transferred.  When you  are asked,
the file name  printed is the name  under which the file  will be stored  on the
remote system.  <RETURN> accepts a file, and <RUBOUT> (sometimes called  <BS> or
<DEL>) rejects a file.   <ALTMODE> (sometimes called <ESCAPE>) aborts  the whole
command.

The default mode for  transfer is Type Text,  Bytesize 8.  See the  TYPE command
for more information.

You may use '=' in place of '→' (right arrow).  The right arrow is intended as a
reminder  that  this  command  uses an  unconventional  ordering  of  source and
destination files.

Note: Under the current protocol,  the program cannot detect the  overwriting of
an existing file on the  remote system without doing an extra  directory command
to explicitly find out if the file already exists.  This might be implemented in
a  future version  of PUPFTP  if  this proves  to be  a problem  and  fixing the
protocol is not feasible.


The following switches may be given in a future implemention:

/V      Verify.  Always asks for confirmation from the terminal.
/-V     Never asks.

Note: Many options available in  RETRIEVE are not currently available  in STORE.
This is because the  STORE command does not  presently know if the  file already
exists on the remote system.
DELETE file

The DELETE command (often abbreviated as DELE) is used to delete  (remove) files
from a remote system.  It may be used to delete a single file or  multiple files
if the remote system implements 'wild card' file references.

Deletions require confirmation, which is taken from the terminal.  When  you are
asked, the file  name to be  deleted is printed.   <RETURN> accepts a  file, and
<RUBOUT> (sometimes called  <BS> or <DEL>)  rejects a file.   <ALTMODE> (labeled
<ESCAPE> on some terminals) aborts the entire command.

Note: Version numbers are implementation dependent, and not all  systems operate
the same way.  On some systems, DELETE will delete the oldest version,  on other
systems  will delete  the most  recent, and  still other  system may  delete all
versions.  The SUNet  IFS deletes the oldest  version, but you should  check the
documentation for the system you are using to find out what it does with version
numbers.

The following switches may be given in a future implemention:

/V      Verify, the default.  Always asks for confirmation from the terminal. If
        there  is  no terminal,  the  deletion  will not  take  place.   This is
        intended for command files where the user must confirm all deletions.
/-V     Never asks.  Use this in command files.
LIST file                                                          Synonym: STAT
NLST file

The LIST and NLST commands type  on the terminal what files exist on  the remote
system.  NLST only  prints the file  names while LIST  also prints the  size and
date last written for each of the requested files.

The file specification may include 'wild cards'.  So, to list everything  in the
directory (on most systems, at least),  you can say 'LIST *'.  Note that  if you
do not supply some kind of  file specification, the result is undefined.   If no
directory is specified, then the alias (set by the ALIAS or CWD command) is used
as the directory.  If the alias directory also has not been specified,  then the
user name  is used for  the directory;  and if neither  has been  specified, the
result is undefined.

Lacking in this command is the ability  to send the output to a file  instead of
the terminal.  This will be implemented in a later version of PUPFTP.

The following switches may be given  in a future implemention to affect  what is
printed.

/T      Type of file
/L      Length of file (in bytes)
/D      Date of creation
/R      Read date
/W      Write date
/A      Author
/E      Print everything
TYPE TEXT                                                  Synonyms: ASCII, TEXT
TYPE BINARY

Type TEXT  is the  default in  the absence  of a  TYPE specification.   The TYPE
command used to force transfers to  be a particular type.  At the  present time,
this is required to transfer binary files.

The command  'TYPE TEXT' may  be abbreviated as  the command 'TEXT'  or 'ASCII'.
Text files are sent over the Ethernet with a byte size of 8, but only 7 bits per
character are  used locally.  This  means that you  cannot transfer  8-bit ASCII
text files (i.e., files containing characters with the '200 on) to SAIL  in text
mode.   SOS  line  numbers are  removed  when  files are  stored,  and  the SAIL
character set is converted into a somewhat more conventional  ASCII arrangement.
Nulls are also removed on both storing and retrieving in text mode.

In addition, CRLF's are converted into single CR's on text stores and  back from
CR's to CRLF's on text retrieves unless specified otherwise by the EOL command.

Because of the conversion of CRLF's and the suppression of nulls, .XGP files and
anything else  that contains overprinting  or nulls will  not be preserved  by a
TEXT type transfer.

Type  BINARY  is  similar  to  IMAGE  mode  on  the  ARPANET,  except  that  the
representation is  different during  transfer. Because  of that  difference, the
file may be stored in a  different representation on a machine with  a different
word size than if  received from the ARPANET.   Available byte sizes are  8, 32,
36, and 72.  Byte size 72 sends two PDP-10 words as nine 8 bit bytes.

A number of  types available on  ARPANET FTP are  not available on  the Ethernet
version.  Types P  and E are not  supported by the protocol,  and type L  is not
implemented at the present time.

Note: Checking is done to make sure the data you are sending is  compatible with
the byte size  you are using.   In particular, a transfer  will be aborted  if a
text transfer is received with the 8th  bit set, if any of the low order  4 bits
are on in  PDP-10 word on a  store of byte size  8 or 16, or  if 36 bit  data is
received with the unused part of the first byte non-zero.  This is to ensure the
integrity of the data you are  transferring.  Type X is the same as  Type Binary
except that this checking is suppressed.

SAIL character conversion is as follows:

      Graphic   Local   Remote  Name

        _       '30     '137    Underline
        ←       '137    '30     Left arrow
        ≠       '33     '32     Not-equals
      <ALT>     '175    '33     <ALT> (or <ESCAPE>)
        }       '176    '175    Right brace
        ~       '32     '176    Tilde

This is the same mapping that is used on font files between SAIL and  MIT except
that  '↑'  is  not  mapped.   Unlike the  mapping  that  ARPANET  FTP  uses, all
characters  are preserved  when a  file is  stored and  then retrieved  (or visa
versa).
USER name                                                         Synonym: LOGIN

The USER command sets what the remote  system will be given as a user  name when
any  file operations  are done.   Note that  PUPFTP does  not actually  use this
information until  a transaction is  attempted.  Therefore, it  also asks  for a
password, in  case it will  be needed.  The  password is requested  with echoing
turned off.

As well as  providing access control, the  user name also specifies  the default
directory for  the remote system.   This default is  overriden by  specifying an
explicit directory name in a command, or by the ALIAS command.


The following is planned but not implemented.

If the USER command is read from a command file, then it first looks  in FTP.INI
on  the  current  directory,  then  FTP.INI  in  your  'master'  directory (i.e.
FTP.INI[1,FOO]) to see if there  is a password listed corresponding to  the name
given  in the  command.  If  it does  not find  a match,  then it  asks  for the
password from the terminal.

CAUTION: If FTP.INI is  to be used, it should  have protection of 077 and  it is
recommended that it be kept on an area that does not belong to any groups.  Even
so, DO NOT consider passwords stored there as secure.
ACCOUNT name                                                       Synonym: ACCT

The ACCOUNT command sets the account  string to be used with the user  name (and
password) on systems that require such things.  At the time of this  writing, no
machine on the Ethernet is known to the author to require this.
ALIAS name                                                   Synonyms: CWD, XCWD

The ALIAS command is used to specify a default directory for file  references on
the remote system.  No special privileges are given other than  those associated
with the name and password supplied  by the USER command.  It merely  avoids the
necessity of typing the directory name every time.  The directory name  given to
the  ALIAS  command  overrides  the  name given  in  the  USER  command,  but is
overridden by an explicit directory name in a file name.
QUIT                                                         Synonyms: BYE, EXIT

QUIT closes the Ethernet connection and exits to the monitor.  It does not abort
any transfer in  progress and in  fact this command will  not be seen  until any
transfer in progress has completed.  (At the moment, the best thing to do with a
hung connection is to hit <CALL> [or  <control>C if you are not on a DD  or III]
and typing RESET to the monitor.)
HELP topic

The HELP  command prints  information about a  command or  other topic  from the
PUPFTP manual.   For example, HELP  HELP will print  this paragraph.   NOTE: The
topic may not  be abbreviated.  HELP  with no arguments  will print most  of the
command names (but not the alternate names, such as EXIT as a synonym for QUIT).

Some of the help messages are quite long.  Do the following to stop  typeout for
a while:

                        Stop                    Start

        Non-display     <CTRL>S                 <CTRL>Q
        DM2500          <HOLD>                  (same)
        DD or III       <CONTROL><BREAK>        <CONTROL><CLEAR>

<control>X means hold down the  CONTROL key (sometimes labeled CTRL) and  at the
same time, hit the key marked X.
Unimplemented commands

The following ARPANET commands are not supported by the Ethernet FTP protocol:

        APPEND, XSEM, XSEN, XMAS, and QUOTE

The following ARPANET commands have not been implemented yet:

        LPPN, PICKUP, RENAME, RNFR, RNTO, RPPN, XIND